package com_7;

import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;

/*
键盘录入一个字符串，在控制遍历这串字符串并统计每个字母出现的个数
 */
public class Test3 {//定义了一个测试类

    public static void main(String[] args) {//main方法入口
        Scanner sc = new Scanner(System.in);//键盘录入对象
        System.out.println("请输入字符串");//提示语句
        String line = sc.nextLine();//定义变量接受录入的字符串
        HashMap<Character, Integer> map = new HashMap<Character, Integer>();//创建map集合对象
        for (int i = 0; i < line.length(); i++) {//使用普通for对这个字符串进行遍历
            char key = line.charAt(i);//通过CharAt方法获取字符串的每一个元素，每一个字母就当成是集合的键位
            Integer value = map.get(key);//使用集合对象调用get方法获取对象的字母
            if (value == null) {//使用if语句进行判断
                map.put(key, 1);//如果是这个字符在集合第一次出现说明是空常量就记录下这个字母，
            } else {//
                value++;//如果这个字母不是第一次出现在这个集合中，说明这个有重复的，所以将这个字母再次存入到集合中去，，并且同时将这个字母的出现次数加一
                //也就是map集合的value值加1
                map.put(key, value);//再次将这个键位和value值保存下来
            }
        }
        StringBuilder sb = new StringBuilder();//创建StringBulider对象。为了可以使用他的拼接方法

        Set<Character> set = map.keySet();//通过key调用keyset方法获取集合中的键位对象，也就会所有的字母
        for (Character key : set) {//
            Integer value = map.get(key);//使用对应的字母获得所对应的字母出现次数
            sb.append(key).append("(").append(value).append(")");//再使用append方法进行拼接
        }
        String s = sb.toString();//最后将StringBulider对象转化为字符串对象
        System.out.println(s);//输出字符串对象
    }
}
